﻿<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
                    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">

    <Style TargetType="{x:Type ScrollViewer}">
        <Setter Property="OverridesDefaultStyle" Value="True"/>
        <Setter Property="Template">
            <Setter.Value>
                <ControlTemplate TargetType="{x:Type ScrollViewer}">
                    <Grid>
                        
                        <ScrollContentPresenter />

                        <ScrollBar  Name="PART_VerticalScrollBar"
                                    HorizontalAlignment="Stretch"                                    
                                    Value="{TemplateBinding VerticalOffset}"
                                    Maximum="{TemplateBinding ScrollableHeight}"
                                    ViewportSize="{TemplateBinding ViewportHeight}"
                                    Visibility="{TemplateBinding ComputedVerticalScrollBarVisibility}"/>
                        
                        <ScrollBar Name="PART_HorizontalScrollBar"
                            Orientation="Horizontal"                            
                            Value="{TemplateBinding HorizontalOffset}"
                            Maximum="{TemplateBinding ScrollableWidth}"
                            ViewportSize="{TemplateBinding ViewportWidth}"
                            Visibility="{TemplateBinding ComputedHorizontalScrollBarVisibility}"/>

                    </Grid>
                </ControlTemplate>
            </Setter.Value>
        </Setter>
    </Style>

    

    <RadialGradientBrush x:Key="bottomLineButtonBackground" Opacity="1" GradientOrigin="0.5,1" Center="0.5,1">
        <GradientStop Color="Black" Offset="0"/>        
        <GradientStop Color="Transparent" Offset="1"/>
    </RadialGradientBrush>

    <Style x:Key="ScrollBarLineButton" TargetType="{x:Type RepeatButton}">
        <Setter Property="SnapsToDevicePixels" Value="True"/>
        <Setter Property="OverridesDefaultStyle" Value="true"/>
        <Setter Property="Focusable" Value="false"/>
        <Setter Property="Background" Value="Transparent"/>
        <Setter Property="Template">
            <Setter.Value>
                <ControlTemplate TargetType="{x:Type RepeatButton}">
                    <Border 
                        Cursor="Hand"                        
                        Height="20"
                        Background="{TemplateBinding Background}"
                        HorizontalAlignment="Stretch">
                      
                        
                            
                            <Path 
                            x:Name="content"
                            Fill="{StaticResource ScrollBarBrush}"
                            Stroke="{StaticResource ScrollBarBorderBrush}"
                            HorizontalAlignment="Center"
                            VerticalAlignment="Center"                            
                            Data="{Binding Path=Content, RelativeSource={RelativeSource TemplatedParent}}" />
                        
                    </Border>                    
                    <ControlTemplate.Triggers>
                        <Trigger Property="IsMouseOver" Value="True">
                            <Setter TargetName="content" Property="Visibility" Value="Visible"/>
                        </Trigger>
                        <Trigger Property="IsMouseOver" Value="False">
                            <Setter TargetName="content" Property="Visibility" Value="Hidden"/>
                        </Trigger>
                    </ControlTemplate.Triggers>
                </ControlTemplate>
            </Setter.Value>
        </Setter>
    </Style>

   

    <Style x:Key="ScrollBarThumb" TargetType="{x:Type Thumb}">
        <Setter Property="SnapsToDevicePixels" Value="True"/>
        <Setter Property="OverridesDefaultStyle" Value="true"/>
        <Setter Property="IsTabStop" Value="false"/>
        <Setter Property="Focusable" Value="false"/>        
        <Setter Property="Visibility" Value="Hidden"/>
        <Setter Property="Opacity" Value="0.8"/>
        <Setter Property="Template">
            <Setter.Value>
                <ControlTemplate TargetType="{x:Type Thumb}">                    
                    <Border CornerRadius="8" Width="20"
                            Cursor="Hand"                       
                          Background="{TemplateBinding Background}"
                          BorderBrush="{TemplateBinding BorderBrush}"
                          BorderThickness="1" />
                    
                </ControlTemplate>
            </Setter.Value>
        </Setter>
    </Style>

    <ControlTemplate x:Key="VerticalScrollBar" TargetType="{x:Type ScrollBar}">
        <Grid HorizontalAlignment="Stretch">
            <Grid.RowDefinitions>
                <RowDefinition MaxHeight="20"/>
                <RowDefinition Height="0.00001*"/>
                <RowDefinition MaxHeight="20"/>
            </Grid.RowDefinitions>
            
            <RepeatButton 
                    x:Name="moveUpButton"
                  Grid.Row="0" ClickMode="Hover"
                Background="Transparent"
                  Style="{StaticResource ScrollBarLineButton}"                  
                  Command="ScrollBar.LineUpCommand"
                  Content="M 0 8 L 16 8 L 8 0 Z" />
            <Border
                x:Name="trackBorder"
                HorizontalAlignment="Right"
                Width="20"                 
                Background="Transparent"
                Grid.Row="1">
                <Track 
                Name="PART_Track"
               
                HorizontalAlignment="Right"
                IsDirectionReversed="true">
                    <Track.Thumb>
                        <Thumb                         
                        x:Name="scrollBar"                        
                        HorizontalAlignment="Right"
                        Style="{StaticResource ScrollBarThumb}"
                        Background="{StaticResource ScrollBarBrush}"
                        BorderBrush="{StaticResource ScrollBarBorderBrush}" />
                            
                    </Track.Thumb>

                </Track>

            </Border>
          
            <RepeatButton
                x:Name="moveDownButton"
                Grid.Row="3" 
                ClickMode="Hover"
                Style="{StaticResource ScrollBarLineButton}"
                Background="{StaticResource bottomLineButtonBackground}"
                Command="ScrollBar.LineDownCommand"                
                Content="M 0 0 L 8 8 L 16 0 Z"/>
        </Grid>
        <ControlTemplate.Triggers>
            <Trigger SourceName="trackBorder" Property="IsMouseOver" Value="True">
                <Setter TargetName="scrollBar" Property="Visibility" Value="Visible"/>
                <!--<Setter TargetName="scrollBar" Property="Opacity" Value="1"/>-->
            </Trigger>
            <Trigger SourceName="moveDownButton" Property="IsMouseOver" Value="True">
                <Setter TargetName="scrollBar" Property="Visibility" Value="Visible"/>
            </Trigger>
            <Trigger SourceName="moveUpButton" Property="IsMouseOver" Value="True">
                <Setter TargetName="scrollBar" Property="Visibility" Value="Visible"/>
            </Trigger>            
        </ControlTemplate.Triggers>
    </ControlTemplate>

    <!--<ControlTemplate x:Key="HorizontalScrollBar" TargetType="{x:Type ScrollBar}">
        <Grid >
            <Grid.ColumnDefinitions>
                <ColumnDefinition MaxWidth="18"/>
                <ColumnDefinition Width="0.00001*"/>
                <ColumnDefinition MaxWidth="18"/>
            </Grid.ColumnDefinitions>
            <Border
      Grid.ColumnSpan="3"
      CornerRadius="2" 
      Background="#F0F0F0" />
            <RepeatButton 
      Grid.Column="0"                           
      Style="{StaticResource ScrollBarLineButton}"
      Width="18"
      Command="ScrollBar.LineLeftCommand"
      Content="M 4 0 L 4 8 L 0 4 Z" />
            <Track 
      Name="PART_Track"
      Grid.Column="1"
      IsDirectionReversed="False">
                <Track.DecreaseRepeatButton>
                    <RepeatButton 
          Style="{StaticResource ScrollBarPageButton}"
          Command="ScrollBar.PageLeftCommand" />
                </Track.DecreaseRepeatButton>
                <Track.Thumb>
                    <Thumb 
          Style="{StaticResource ScrollBarThumb}" 
          Margin="0,1,0,1"  
          Background="{StaticResource NormalBrush}"
          BorderBrush="{StaticResource NormalBorderBrush}" />
                </Track.Thumb>
                <Track.IncreaseRepeatButton>
                    <RepeatButton 
          Style="{StaticResource ScrollBarPageButton}"
          Command="ScrollBar.PageRightCommand" />
                </Track.IncreaseRepeatButton>
            </Track>
            <RepeatButton 
      Grid.Column="3" 
      Style="{StaticResource ScrollBarLineButton}"
      Width="18"
      Command="ScrollBar.LineRightCommand"
      Content="M 0 0 L 4 4 L 0 8 Z"/>
        </Grid>
    </ControlTemplate>-->

    <Style x:Key="{x:Type ScrollBar}" TargetType="{x:Type ScrollBar}">
        <Setter Property="SnapsToDevicePixels" Value="True"/>
        <Setter Property="OverridesDefaultStyle" Value="true"/>
        <Style.Triggers>
            <!--<Trigger Property="Orientation" Value="Horizontal">
                <Setter Property="Width" Value="Auto"/>
                <Setter Property="Height" Value="18" />
                <Setter Property="Template" Value="{StaticResource HorizontalScrollBar}" />
            </Trigger>-->
            <Trigger Property="Orientation" Value="Vertical">                
                <Setter Property="Height" Value="Auto" />
                <Setter Property="Template" Value="{StaticResource VerticalScrollBar}" />
            </Trigger>
        </Style.Triggers>
    </Style>


</ResourceDictionary>